#include <stdio.h>
#include <stdlib.h>

/*

void qsort ( 
             void* base , // 指向待排序数组中第一个元素
             size_t num , // base指向的元素个数
             size_t size , // 每个元素的大小,单位是字节
             int (*compar) (const void* p1 , const void* p2) // 函数指针,指向的函数可以比较数组中的两个元素
             // p1指向的元素比p2指向的元素小,返回<0的数字
             // p1指向的元素比p2指向的元素一样大,返回0
             // p1指向的元素比p2指向的元素大,返回<0的数字
           ) ;

*/

// 由于快排被封装在了头文件stdlib.h里面,所以我们在使用的时候直接包含头文件,就可以直接使用快排
// 但是要注意,我们快排里面的最后一个参数需要自己写函数求得然后自己返回整型值

int cmp_int (const void* p1 , const void* p2) // 自定义函数,其返回值为整型
{

    return *(int*) p1 - *(int*) p2 ; // 将p1和p2的值相减之后返回值

}

int main ()
{

    int array [10] = {1 , 3 , 5 , 7 , 9 , 2 , 4 , 6 , 8 , 0} ;

    size_t sz = sizeof (array) / sizeof (array [0]) ;

    qsort (array , sz , sizeof (array[0]) , cmp_int) ;

    for (int i = 0 ; i < (int) sz ; i++)
    {

        printf ("%d " , array [i]) ;

    }

    return 0 ;

}